View Javadoc
1 package net.plugin.sql.gui;
2
3 /*
4 * Created by IntelliJ IDEA.
5 * User: birchfield
6 * Date: Aug 18, 2002
7 * Time: 12:16:16 PM
8 * To change template for new class use
9 * Code Style | Class Templates options (Tools | IDE Options).
10 */
11
12 import net.plugin.sql.beans.DataSource;
13 import net.plugin.sql.gui.model.tree.DataSourceTreeNode;
14 import net.plugin.sql.util.DataSourceManager;
15 import net.plugin.sql.listeners.DataSourceSelectionListener;
16 import net.plugin.sql.listeners.AdhocQuerySelectionListener;
17
18 import javax.swing.*;
19 import javax.swing.event.TreeSelectionEvent;
20 import javax.swing.tree.*;
21 import java.awt.event.*;
22 import java.util.*;
23
24 import com.intellij.openapi.project.Project;
25 import com.intellij.openapi.project.ProjectManager;
26
27 public class SQLConnectionTree extends JTree implements MouseListener, ActionListener {
28 private Collection dataSourceListeners = null;
29 private Collection adhocQueryListeners = null;
30
31 private DataSourcePopupMenu popupMenu = null;
32
33 private final Project project;
34
35 public SQLConnectionTree(Project project) {
36 super();
37 this.project = project;
38 dataSourceListeners = new ArrayList();
39 adhocQueryListeners = new ArrayList();
40 updateTreeModel();
41 getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
42 addMouseListener(this);
43 popupMenu = new DataSourcePopupMenu();
44 popupMenu.addActionListener(this);
45 }
46
47
48
49 public void updateTreeModel() {
50 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Data Sources");
51 Collection datasources = DataSourceManager.getInstance(project).getDataSources();
52 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) {
53 DataSource dataSource = (DataSource) iterator.next();
54 DataSourceTreeNode node = new DataSourceTreeNode(dataSource);
55 root.add(node);
56 }
57 DefaultTreeModel model = new DefaultTreeModel(root);
58 setModel(model);
59 }
60
61 public void valueChanged(TreeSelectionEvent e) {
62 System.out.println("e = " + e);
63 DataSourceTreeNode node = (DataSourceTreeNode) getLastSelectedPathComponent();
64 System.out.println("node = " + node);
65 }
66
67 public void mouseClicked(MouseEvent e) {
68 if (e.getClickCount() == 2) {
69 DataSourceTreeNode node = (DataSourceTreeNode) getLastSelectedPathComponent();
70 notifyDatasourceListeners(node.getDataSource());
71 }
72 }
73
74 public void mousePressed(MouseEvent e) {
75 if (e.isPopupTrigger()) {
76 popupMenu.show(e.getComponent(), e.getX(), e.getY());
77 }
78 }
79
80 public void mouseReleased(MouseEvent e) {
81 if (e.isPopupTrigger()) {
82 popupMenu.show(e.getComponent(), e.getX(), e.getY());
83 }
84 }
85
86 public void mouseEntered(MouseEvent e) {
87 }
88
89 public void mouseExited(MouseEvent e) {
90 }
91
92 public void actionPerformed(ActionEvent e) {
93 DataSourceTreeNode node = (DataSourceTreeNode) getLastSelectedPathComponent();
94 if (node != null) {
95 if (e.getActionCommand().indexOf("adhoc") > 0) {
96 notifyAdhocQueryListeners(node.getDataSource());
97 } else {
98 DataSourceManager.getInstance(project).removeDataSource(node.getDataSource());
99 updateTreeModel();
100 }
101 }
102 }
103
104
105 private void notifyDatasourceListeners(DataSource dataSource) {
106 for (Iterator iterator = dataSourceListeners.iterator(); iterator.hasNext();) {
107 DataSourceSelectionListener dataSourceSelectionListener = (DataSourceSelectionListener) iterator.next();
108 dataSourceSelectionListener.dataSourceSelected(dataSource);
109 }
110 }
111
112 private void notifyAdhocQueryListeners(DataSource dataSource) {
113 for (Iterator iterator = adhocQueryListeners.iterator(); iterator.hasNext();) {
114 AdhocQuerySelectionListener adhocQuerySelectionListener = (AdhocQuerySelectionListener) iterator.next();
115 adhocQuerySelectionListener.adhocQuerySelected(dataSource);
116 }
117 }
118
119 public void addDataSourceSelectionListener(DataSourceSelectionListener listener) {
120 dataSourceListeners.add(listener);
121 }
122
123 public void addAdhocQuerySelectionListener(AdhocQuerySelectionListener listener) {
124 adhocQueryListeners.add(listener);
125 }
126
127 public static void main(String[] args) {
128 // JFrame frame = new JFrame("Test");
129 // frame.getContentPane().add(new SQLConnectionTree());
130 // frame.setSize(300, 300);
131 // frame.setVisible(true);
132 // frame.show();
133 }
134 }
This page was automatically generated by Maven